package com.add

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD

object Add1 {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf().setAppName("Add").setMaster("local[2]")
    val sc: SparkContext = new SparkContext(conf)
    val list1 = List(30, 50, 70, 60, 10, 20)
    val rdd1: RDD[Int] = sc.parallelize(list1, 2)


    /*
    在Driver端声明了一个变量,等于0 ,然后开始执行程序.程序在Executor上执行
      需要给a的值序列化到Executor过去,
      此时在程序里面是给Executor里面的值进行操作的,并没有对Driver的值进行操作,
      所以Driver的值一直就是0了
    */
    var a = 0
    val rdd2: RDD[Int] = rdd1.map(x => {
      a += 1
      x
    })
    rdd2.collect
    println(a) //输出: 0
    Thread.sleep(10000000)
    sc.stop()

  }

}
